<?php

namespace app\api\model\admin\setting;

use app\api\common\model\BaseModel;
use app\api\common\traits\ModelTrait;
use think\db\Query;

/**
 * 岗位
 * Class User
 *
 * @package app\model\admin
 */
class Positions extends BaseModel
{
    use ModelTrait;

    protected $connection = 'mysql';
    /**
     * 数据表主键
     *
     * @var string
     */
    protected $pk = 'id';

    /**
     * 模型名称
     *
     * @var string
     */
    protected $name = 'admin_position';

    //软删除，查询时会自动加上 xxx IS NULL
    use \think\model\concern\SoftDelete;

    protected string $deleteTime = 'delete_time';

    /**
     * 名称搜索器
     *
     * @param \think\db\Query $query
     * @param string          $value
     */
    public function searchNameLikeAttr(Query $query, string $value)
    {
        if ($value) {
            $query->whereLike('position_name', '%' . $value . '%');
        }
    }

    /**
     * 代码搜索器
     *
     * @param \think\db\Query $query
     * @param string          $value
     */
    public function searchCodeAttr(Query $query, string $value)
    {
        if ($value) {
            $query->whereLike('position_code', '%' . $value . '%');
        }
    }

    /**
     * ID搜索器
     *
     * @param \think\db\Query $query
     * @param string|array    $value
     */
    public function searchIdAttr(Query $query, string|array $value)
    {
        if ($value) {
            if (is_array($value)) {
                $query->whereIn('id', $value);
            } else {
                $query->where('id', $value);
            }
        }
    }

    /**
     * Pid搜索器
     *
     * @param \think\db\Query $query
     * @param string|array    $value
     */
    public function searchPidAttr(Query $query, string|array $value)
    {
        if ($value) {
            if (is_array($value)) {
                $query->whereIn('department_id', $value);
            } else {
                $query->where('department_id', $value);
            }
        }
    }

    /*/withSearch不能查询$value为null的，必须配置查询器
    public function searchDeleteTimeAttr($query, $value)
    {
        $query->where('delete_time', $value);
    }
    */

    /**
     * 定义与Dept模型的关联关系
     *
     * @return \think\model\relation\BelongsTo
     */
//    public function dept(): \think\model\relation\BelongsTo
//    {
//        return $this->belongsTo(Dept::class, 'department_id');
//    }

    /**
     * 关联user
     *
     * @return \think\model\relation\HasOne
     */
    public function dept()
    {
        return $this->hasOne(Dept::class, 'id', 'department_id');
    }
}
